#ifndef _EFI_H
#define _EFI_H

#include "common.h"

DESTRUCT(EFI_PRO);
DESTRUCT(EFI_ARGS);

typedef int (*ADD)(EFI_PRO *this,int a,int b);
typedef int (*MAX)(EFI_PRO *this,int a,int b);

struct _EFI_PRO{
    ADD Add;
    MAX Max;
};

extern EFI_PRO EFI_Pro;

//--------------------------
typedef int (*ARGS_INIT)(EFI_ARGS *this,ARGS *arglist,int len);
typedef int (*ARGS_GET_CMD)(EFI_ARGS *this,ARGS *arglist);
typedef int (*ARGS_ARG_LEN)(EFI_ARGS *this,ARGS *arglist);
typedef int (*ARGS_DISPLAY)(EFI_ARGS *this,ARGS *arglist);
typedef int (*ARGS_DELETE)(EFI_ARGS *this,ARGS *arglist);

struct _EFI_ARGS{
    ARGS_INIT Init;
    ARGS_GET_CMD GetCmd;
    ARGS_ARG_LEN Length;
    ARGS_DISPLAY Display;
    ARGS_DELETE  Delete;
};

extern EFI_ARGS Arg_Protocol;
#endif  //#ifndef _EFI_H

